package pe.gob.mtpe.renoccsys.reniecws;

import org.reniec.rel.ObtenerPersonaReniec;
import org.reniec.rel.ReniecBean;
import pe.gob.mtpe.renoccsys.bean.Persona;
import pe.gob.mtpe.renoccsys.mybatis.despachadores.PersonaReniecDespatch;
import pe.gob.mtpe.renoccsys.mybatis.despachadores.WebServiceDespatch;

public class ReniecWebService {
	
	WebServiceDespatch wsd;
	
	public String getnewSessionWS() throws Exception {
		System.out.println("OBTIENE SESION DE WEBSERVICE");
		String session="";
		try {
			
			wsd = new WebServiceDespatch();
			
			ObtenerPersonaReniec opr = new ObtenerPersonaReniec();
			
			//CONSULTAR EN BASE DE DATOS SI HAY SESION ACTIVA DIARIA
			session = wsd.verifySessionWS();
			
			//SI NO HAY SESSION ACTIVA EN BASE 
			if (session == null || session.length()==0) {
			
				//1.OBTENER SESSION 
				session=opr.obtenerSession("MINTRAWS", "MINTRAWS!=");
				
				//2.REGISTRAR SESSION EN BASE DE DATOS	
				wsd.savenewSessionWS(session, "000", "E");
				
			} 
			
			return session;
					
		} catch (Exception e) {
			System.out.println("error webservice");
			e.printStackTrace();
			return null;
		}
		
	}
	

	
	
	public Persona obtenerPersonaSWReniec(Persona persona) throws Exception{
		System.out.println("BUSCANDO PERSONA EN WEBSERVICE");
		Persona resultado=new Persona();
		PersonaReniecDespatch dspPersonaReniec=new PersonaReniecDespatch();
		String verificacion="";
		try {
			
			if (persona.getV_codtdocide().equals("03")) {
				//VERIFICAMOS SI LA PERSONA EXISTE Y ESTA ACTUALIZADA SEGUN RENIEC
				System.out.println("VERIFICAMOS SI LA PERSONA EXISTE Y ESTA ACTUALIZADA SEGUN RENIEC");
				verificacion=dspPersonaReniec.verificaActuPersonaReniec(persona);
				
				//SI NO EXISTE DEBE SER NULL ENTONCES SE CONSULTA Y SE INSERTA
				if(verificacion==null){
					System.out.println("SI NO EXISTE DEBE SER NULL ENTONCES SE CONSULTA Y SE INSERTA");
					persona.setV_flgreniec("S");
					
					ReniecBean reniecBean = new ReniecBean();
					ObtenerPersonaReniec opr = new ObtenerPersonaReniec();
					
					String sesion = "" + getnewSessionWS();
					
					System.out.println("OBTIENE PERSONA [sesion:" + sesion + "]");
					
					reniecBean = opr.obtenerPersona(
							sesion, 
							"MINTRAWS", 
							"5", 
							"10713307", 
							persona.getV_numdoc());
					
					reniecBean.valuesToString();
					
					persona.setV_codtdocide("03");
					persona.setV_numdoc(reniecBean.getV_numdoc());
					persona.setV_apepater(reniecBean.getV_appaterno());
					persona.setV_apemater(reniecBean.getV_apmaterno());
					persona.setV_nombres(reniecBean.getV_nombres());
					persona.setC_codsexo(reniecBean.getV_genero());
					
					System.out.println("VERIFICACION = NULL; PERSONA TOSTRING");
					reniecBean.valuesToString();		
					
					
					
					dspPersonaReniec.insertarPersona(persona);
					resultado=dspPersonaReniec.getTrabajador(persona);
				}else{
					//SI EXISTE  
					//SI ESTA ACTUALIZADO SOLO SE CONSULTA 
					if(verificacion.equals("S")){
						System.out.println("VERIFICACION != NULL; PERSONA ACTUALIZADA");
						resultado=dspPersonaReniec.getTrabajador(persona);
					}else{
						//SINO SE ACTUALIZA LA PERSONA
						System.out.println("VERIFICACION != NULL; PERSONA DEBE ACTUALIZARSE");
						ReniecBean reniecBean = new ReniecBean();
						ObtenerPersonaReniec opr = new ObtenerPersonaReniec();
						
						String sesion = "" + getnewSessionWS();
						reniecBean = opr.obtenerPersona(
								sesion, 
								"MINTRAWS", 
								"5", 
								"10713307", 
								persona.getV_numdoc());
						
						reniecBean.valuesToString();
						
						persona.setV_codtdocide("03");
						persona.setV_numdoc(reniecBean.getV_numdoc());
						persona.setV_apepater(reniecBean.getV_appaterno());
						persona.setV_apemater(reniecBean.getV_apmaterno());
						persona.setV_nombres(reniecBean.getV_nombres());
						persona.setC_codsexo(reniecBean.getV_genero());
						persona.setV_flgreniec("S");
						dspPersonaReniec.actualizarPersona(persona);
						resultado=dspPersonaReniec.getTrabajador(persona);
					}
				}
			} else {
				resultado = null;
			}
			
			
		} catch (Exception e) {	
			resultado=null;
			e.printStackTrace();
		}
		return resultado;
		
	}


}
